package com.yunxin.download.server.infra.constant.enums;

import com.yunxin.common.result.IResultCode;
import lombok.Getter;
import lombok.RequiredArgsConstructor;

/**
 * @author zero°
 * @since 2023-06-16
 */
@Getter
@RequiredArgsConstructor
public enum DownloadResultCode implements IResultCode {

    /**
     * 系统执行出错
     */
    SYSTEM_EXECUTION_ERROR("B0001", "系统执行出错"),

    /**
     * 数据源不存在
     */
    DATA_SOURCE_ERROR("D0000", "数据源不存在"),

    /**
     * 获取模板文件失败
     */
    GET_TEMPLATE_FILE_ERROR("D0001", "获取模板文件失败"),

    /**
     * 生成模板文件失败
     */
    CREATE_TEMPLATE_FILE_ERROR("D0002", "生成模板文件失败"),

    /**
     * json格式错误
     */
    JSON_ERROR("D0003", "请检查json格式是否正确"),

    /**
     * sql为空
     */
    SQL_ERROR("D0004", "sql为空"),


    /**
     * 导出配置为空
     */
    CONFIG_ERROR("D0005", "导出配置为空"),
    /**
     * 读取文件失败
     */
    READ_FILE_ERROR("D0006", "读取文件失败"),

    /**
     * collections元素必须有distinctFieldName属性
     */
    COLLECTION_MUST_DISTINCT_FILE_NAME("D0007", "collections元素必须有distinctFieldName属性"),



    ;

    @Override
    public String getCode() {
        return code;
    }

    @Override
    public String getMsg() {
        return msg;
    }

    private final String code;
    private final String msg;

    @Override
    public String toString() {
        return "{" +
                "\"code\":\"" + code + '\"' +
                ", \"msg\":\"" + msg + '\"' +
                '}';
    }


    public static DownloadResultCode getValue(String code) {
        for (DownloadResultCode value : values()) {
            if (value.getCode().equals(code)) {
                return value;
            }
        }
        // 默认系统执行错误
        return SYSTEM_EXECUTION_ERROR;
    }

}
